package modelo.Tests;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import modelo.AlgoHero.*;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import junit.framework.TestCase;

public class NotaTest extends TestCase {
	
	private Nota faBLANCA = new Nota(Tono.FA,Figura.BLANCA);
	private Nota solNEGRA = new Nota(Tono.SOL,Figura.NEGRA);
	private Nota siSEMICORCHEA = new Nota(Tono.SI,Figura.SEMICORCHEA);
	private Nota doSILENCIODENEGRA = new Nota (Tono.DO, Figura.SILENCIODENEGRA);
	
	public NotaTest (){
		
	}
	
	public void testTraduccion1() {
        Integer result= this.getFaBLANCA().getDuracion();
        assertTrue(result == 8);
        
        result = this.getsiSEMICORCHEA().getDuracion();
        assertTrue(result == 1);
        
        result = this.getsolNEGRA().getDuracion();
        assertTrue(result==4);
    }

	public Nota getFaBLANCA() {
		return faBLANCA;
	}
	public Nota getsolNEGRA() {
		return solNEGRA;
	}
	public Nota getsiSEMICORCHEA() {
		return siSEMICORCHEA;
	}
	public Nota getDoSILENCIODENEGRA(){
		return doSILENCIODENEGRA;
	}

	/**
	 * Metodo que crea un nodo con lo de partitura
	 */
	public Element crearNodo() throws ParserConfigurationException
	{
		  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		  DocumentBuilder db = dbf.newDocumentBuilder(); 
	   	  Document doc = db.newDocument();	   	  
	   	  Element elemento = doc.createElement("nota");	   	  
	      elemento.setAttribute("figura", "CORCHEA");
	   	  elemento.setTextContent("SOL");	   	    	 
	   	  return elemento;	  
	}
	
	/**
	 * Metodo que verifica que se cree la nota con todos sus atributos bien, mediante un nodo
	 */
	
	public void testDeserialize () throws ParserConfigurationException{				
		Element elemento = crearNodo();		
		Nota nota = new Nota();
		nota.Deserialize(elemento);
		assertTrue(nota.getDuracion() != 0);
	}


}
